package mybox.engine.rundfeder;

import mybox.engine.Figur;
import mybox.engine.File4Qcad;
import mybox.engine.QVector;
import mybox.engine.RandLinieOO;
import static java.lang.Math.*;

/**aus alter Version wiederhergestellt*/
public class RundTop implements Figur {
	
	File4Qcad file4qcad;
	QVector start;
	
	double laenge;
	double breite;
	double glattLaenge;
	double glattBreite;
	int anzahlSektoren;
	double innerSektorBreite;
	
	double materialDicke;
	double laserBreite;
	double zinkungsfaktor;
	
	RandLinieOO[] randlinie = new RandLinieOO[4];
	ViertelKreis[] viertelkreis = new ViertelKreis[4];
	
	public RundTop(
			File4Qcad file4qcad, 
			QVector start, 
			double laenge, 
			double breite, 
			int anzahlSektoren, 
			double innerSektorBreite,
			double materialDicke,
			double laserBreite,
			double zinkungsFaktor
			) {
		this.file4qcad=file4qcad;
		this.start=start;
		this.laenge=laenge;
		this.breite=breite;
		glattLaenge=glattValue(laenge, innerSektorBreite, anzahlSektoren);
		glattBreite=glattValue(breite,innerSektorBreite,anzahlSektoren);
		this.anzahlSektoren=anzahlSektoren;
		this.innerSektorBreite=innerSektorBreite;
		this.materialDicke=materialDicke;
		this.laserBreite=laserBreite;
		this.zinkungsfaktor=zinkungsFaktor;		
						
		
	}
	
	public static double glattValue(double rawLaenge, double innerSektBreite, int anzahlSektoren) {
		return rawLaenge-2*ViertelKreis.radius(innerSektBreite, anzahlSektoren);
	}

	@Override
	public void draw() {
		
		
		for (int randIdx=0;randIdx<4;randIdx++) {
			
			QVector startPoint=null;
			if (randIdx==0) startPoint=start;
			else            startPoint=
					new QVector (
							viertelkreis[randIdx-1].end.x+(materialDicke*sin(randIdx*PI/2)),
							viertelkreis[randIdx-1].end.y-(materialDicke*cos(randIdx*PI/2))
									);
			double laengeBreite;
			if (randIdx%2==0) laengeBreite=glattLaenge;
			else			  laengeBreite=glattBreite;
			randlinie[randIdx] = new RandLinieOO(
					file4qcad,
					startPoint,
					randIdx*PI/2,
					laengeBreite,			
					materialDicke,
					zinkungsfaktor,
					laserBreite,
					false,//=isGlatt,
					true,//=isRand,
					false,//=isFemale,
					false//=hasRandVerkuerzt
					);
			
			randlinie[randIdx].draw();
			
			viertelkreis[randIdx]  = new ViertelKreis(
					file4qcad, 
					randlinie[randIdx].endPosInnen, 
					anzahlSektoren, 
					innerSektorBreite, 
					randIdx*PI/2-PI/2);
			
			viertelkreis[randIdx].draw();			
			
		}
		
				
		
	}

	

}
